Host computing systems, or simply “hosts,” such as data servers, web servers, and enterprise computing systems, typically employ storage arrays for storing large amounts of data. Hosts generally connect to respective storage arrays through multiple paths. Multiple paths allow for redundant connections, parallel data transmission, load balancing, and failover.
A typical host employs a multipathing driver to manage the various paths connecting the host to the storage array. The multipathing driver is installed as a kernel extension in the host's operating system. Typical roles of the multipathing driver include selecting paths for optimal load balancing between the host and the storage array and responding to faults by routing data around inoperative paths. An example of a multipathing driver is the PowerPath® driver from EMC Corporation of Hopkinton, Mass.
Multipathing drivers are generally configured to raise events. As is known, “events” are occurrences in or pertaining to hosts, paths, or storage arrays, which can be detected and recorded. Most conventional multipathing drivers are configured to store records of events in a system log. The system log typically resides in a file accessible in a file system of the host. Software programs can obtain information about events by accessing the system log (e.g., “log scraping”) and applying intelligent algorithms to diagnose or predict problems. In addition to using system logs, the PowerPath® driver also stores a single record of an event in kernel memory. A software interface provided with this driver allows applications, such as data storage administration programs, to direct the driver to return the next event that occurs. If an event occurs within a designated timeout interval, a record of the event is sent to the application through the software interface. The application can then examine the event record to obtain information about the host, paths, or storage array.